package vista;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JFileChooser;
import javax.swing.JProgressBar;
import javax.swing.JMenuBar;
import javax.swing.JSeparator;
import javax.swing.JMenuItem;
import javax.swing.JMenu;

import controlador.Lector;
import controlador.ListaArchivos;

import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.EnumSet;
import static java.nio.file.FileVisitOption.FOLLOW_LINKS;

public class JFPpal extends JFrame {
	
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	/**
	 * Create the frame.
	 */
	public JFPpal() {
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBounds(100, 100, 487, 300);
		setResizable(false);
		
		JMenuBar menuBar = new JMenuBar();
		setJMenuBar(menuBar);
		
		JMenu mnArchivo = new JMenu("Archivo");
		menuBar.add(mnArchivo);
		
		JMenu mnHerramientas = new JMenu("Herramientas");
		menuBar.add(mnHerramientas);
		
		JMenu mnBaseDeDatos = new JMenu("Base de datos");
		mnHerramientas.add(mnBaseDeDatos);
		
		final JFileChooser fcSelectPath = new JFileChooser();
		fcSelectPath.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
		
		JMenuItem mntmActualizar = new JMenuItem("Actualizar");
		mntmActualizar.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e) {
				selectPathPpal(fcSelectPath);
			}
		});
		mnBaseDeDatos.add(mntmActualizar);
		
		JMenu mnAyuda = new JMenu("Ayuda");
		menuBar.add(mnAyuda);
		getContentPane().setLayout(null);
		
		JPanel panel = new JPanel();
		panel.setBounds(0, 217, 481, 34);
		getContentPane().add(panel);
		panel.setLayout(null);
		
		JProgressBar progressBar = new JProgressBar();
		progressBar.setBounds(325, 9, 146, 17);
		panel.add(progressBar);
		progressBar.setStringPainted(true);
		
		JSeparator separator = new JSeparator();
		separator.setBounds(0, 216, 481, 2);
		getContentPane().add(separator);

	}
	
	private void selectPathPpal(JFileChooser fcSelectPath){
		int seleccion = fcSelectPath.showOpenDialog(rootPane);
		
		if (seleccion == JFileChooser.APPROVE_OPTION){
			File fichero = fcSelectPath.getSelectedFile();
			String dir = fichero.toString();
			ListaArchivos.clearList();
	   try {
		   if(dir.endsWith("songs")){
			   Files.walkFileTree(Paths.get(dir), EnumSet.of(FOLLOW_LINKS), 2, new ListaArchivos());
			   
			   if(!ListaArchivos.rutaArchivosTxt.isEmpty()){
				   Lector.leerArchivo(ListaArchivos.rutaArchivosTxt);
			   }else{
				   new Mensaje("La carpeta se encuentra vacia", Mensaje.advertencia);
			   }
			   
		   }else{
			   new Mensaje("Seleccione la carpeta \"songs\"",Mensaje.error);
			   selectPathPpal(fcSelectPath);
		   }
		}catch (IOException e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		}
		   
		}
	}
	
}
